home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / um / include / asm / pgalloc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.8 KB  |  73 lines

  1. /* 
  2.  * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
  3.  * Copyright 2003 PathScale, Inc.
  4.  * Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h
  5.  * Licensed under the GPL
  6.  */
  7.  
  8. #ifndef __UM_PGALLOC_H
  9. #define __UM_PGALLOC_H
  10.  
  11. #include "linux/mm.h"
  12. #include "asm/fixmap.h"
  13.  
  14. #define pmd_populate_kernel(mm, pmd, pte) \
  15.     set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
  16.  
  17. #define pmd_populate(mm, pmd, pte)                 \
  18.     set_pmd(pmd, __pmd(_PAGE_TABLE +            \
  19.         ((unsigned long long)page_to_pfn(pte) <<    \
  20.             (unsigned long long) PAGE_SHIFT)))
  21. #define pmd_pgtable(pmd) pmd_page(pmd)
  22.  
  23. /*
  24.  * Allocate and free page tables.
  25.  */
  26. extern pgd_t *pgd_alloc(struct mm_struct *);
  27. extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
  28.  
  29. extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long);
  30. extern pgtable_t pte_alloc_one(struct mm_struct *, unsigned long);
  31.  
  32. static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  33. {
  34.     free_page((unsigned long) pte);
  35. }
  36.  
  37. static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
  38. {
  39.     pgtable_page_dtor(pte);
  40.     __free_page(pte);
  41. }
  42.  
  43. #define __pte_free_tlb(tlb,pte)                \
  44. do {                            \
  45.     pgtable_page_dtor(pte);                \
  46.     tlb_remove_page((tlb),(pte));            \
  47. } while (0)
  48.  
  49. #ifdef CONFIG_3_LEVEL_PGTABLES
  50.  
  51. static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
  52. {
  53.     free_page((unsigned long)pmd);
  54. }
  55.  
  56. #define __pmd_free_tlb(tlb,x)   tlb_remove_page((tlb),virt_to_page(x))
  57. #endif
  58.  
  59. #define check_pgt_cache()    do { } while (0)
  60.  
  61. #endif
  62.  
  63. /*
  64.  * Overrides for Emacs so that we follow Linus's tabbing style.
  65.  * Emacs will notice this stuff at the end of the file and automatically
  66.  * adjust the settings for this buffer only.  This must remain at the end
  67.  * of the file.
  68.  * ---------------------------------------------------------------------------
  69.  * Local variables:
  70.  * c-file-style: "linux"
  71.  * End:
  72.  */
  73.